package com.yuw.udpsocket;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;

public class ClientThread extends Thread {

	// 属性
	private DatagramSocket socket;

	@Override
	public void run() {
		try {
			// 初始化客户端DatagramSocket
			socket = new DatagramSocket();

			////////// 发送消息/////////////
			// 输出内容到网路，发送给服务器端
			String strMsgSend = "hello服务器端，我是客户端！";
			// 第一个参数是服务器的主机名或者ip地址：localhost表示当前主机是服务器；127.0.0.1 表示当前主机； 具体的ip地址
			// 例如：10.96.107.91
			// 将需要发送的消息打包到DatagramPacket数据包中
			DatagramPacket dp = new DatagramPacket(strMsgSend.getBytes(), 0, strMsgSend.getBytes().length,
					new InetSocketAddress("10.96.107.91", 8890));
			// 使用DatagramSocket发送数据包到网络
			socket.send(dp);

			// 输出信息
			System.out.println(strMsgSend);

			////////// 接收消息/////////////
			
			// 客户端的DatagramSocket创建一个用于接收服务器端的DatagramPacket
			// 也就是，客户端使用DatagramPacket来接收服务器端发送的消息内容
			// 创建一个DatagramPacket使用的字节数组
			byte[] buf = new byte[1024];
			DatagramPacket dpReceived = new DatagramPacket(buf, buf.length);
			// 将服务端发送的消息接收到客户端的DatagramPacket中
			socket.receive(dpReceived);
			// 获取本次接收的信息的字节的个数
			int len = dpReceived.getLength();

			// 把接收到的字节转换为字符串
			String strMsgRecieved = new String(buf, 0, len);
			// 输出消息
			System.out.println(strMsgRecieved);

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}
